package com.tjec.project.workflow.mapper;

import com.tjec.project.workflow.domain.BmsWorkflow;
import com.tjec.project.workflow.domain.dto.WorkflowParamsDto;
import com.tjec.project.workflow.domain.vo.BmsWorkflowVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 项目流程Mapper接口
 * 
 * @author pangyongfeng
 * @date 2020-05-18
 */
public interface BmsWorkflowMapper {

	/**
	 * 查询项目流程列表
	 * 
	 * @param bmsWorkflow 项目流程
	 * @return 项目流程集合
	 */
	public List<BmsWorkflow> selectBmsWorkflowList(BmsWorkflow bmsWorkflow);

	/**
	 * 新增项目流程
	 * 
	 * @param bmsWorkflow 项目流程
	 * @return 结果
	 */
	public int insertBmsWorkflow(BmsWorkflowVo bmsWorkflow);

	/**
	 * 修改项目流程
	 * 
	 * @param bmsWorkflow 项目流程
	 * @return 结果
	 */
	public int updateBmsWorkflow(BmsWorkflowVo bmsWorkflow);
	
	/**
	 * 获取传入bpm系统的参数
	 * @param map
	 * @return
	 */
	public WorkflowParamsDto getBpmParams(BmsWorkflow bmsWorkflow);
	
	/**
	 * 更新当前审批人员工编号
	 * @param newJobNo 新员工编号
	 * @param oldJobNo 原员工编号
	 * @return
	 */
	public int updateAuditorIdJobNo(String newJobNo,String oldJobNo);
	
	/**
	 * 更新当前发起人员工编号
	 * @param newJobNo 新员工编号
	 * @param oldJobNo 原员工编号
	 * @return
	 */
	public int updateOriginIdJobNo(String newJobNo,String oldJobNo);
	
	/**
	 * 获取本项目项目成员和项目负责人
	 * @param projectId 项目id
	 * @return
	 */
	public String getMembers(String projectId);
	
	public BmsWorkflow selectBmsWorkflowByInstanceId(String intanceId);
	
	/**
	 * 根据流程实例id和当前审批节点获取当前审批人
	 * @param instanceId
	 * @param node
	 * @return
	 */
	public String getAuditor(String instanceId, String node);
	
	/**
	 * 检查当前实例是否存在
	 * @param instanceId
	 * @return
	 */
	public Integer checkInstanceId(String instanceId);

	/**
	 * 查询项目流程列表
	 *
	 * @param bmsWorkflow 项目流程
	 * @return 项目流程集合
	 */
	public List<BmsWorkflow> selectBmsWorkflowMobileList(BmsWorkflow bmsWorkflow);

	/**
	 * 未完成流程
	 * @param bmsWorkflow
	 * @return
	 */
    List<String> selectBmsWorkflowListAndStatusUnfinished(BmsWorkflow bmsWorkflow);

	/**
	 * 通过业务ID修改流程的项目ID
	 * @param businessId
	 * @param projectId
	 */
	int updateProjectByBusinessId(@Param("businessId") String businessId,@Param("projectId") String projectId);

	/**
	 * 修改流程状态为2取消状态
	 * @param list
	 */
	int updateBmsWorkflowStatus(List<String> list);
	
	/**
	 * 检查用户是否参与过此流程
	 * @param jobNo
	 * @param instanceId
	 * @return
	 */
	Integer checkTookPartIn(String jobNo,String instanceId);
}
